import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";

export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src"),
    },
  },
  // css: {
  //   preprocessorOptions: {
  //     scss: {
  //       //可引入全局变量
  //       additionalData: `@import "@/assets/styles/variables.scss";`,
  //     },
  //   },
  // },
  server: {
    host: "0.0.0.0", // 允许通过 localhost 和本机 IP 访问
    // port: 8080,
    open: true, // 自动打开浏览器
    fs: {
      strict: false, // 禁用严格模式，允许加载外部文件
    },
    proxy: {
      "/dev": {
        target: "http://192.168.1.165:8080", // 后端 API 地址
        // target: "http://182.26.1.220:9999", // 后端 API 地址
        changeOrigin: true, // 修改请求头中的 Host 为目标地址
        ws: true,
        rewrite: (path) => path.replace(/^\/dev/, ""), // 去掉 /api 前缀
      },
      "/tes": {
        // target: "http://192.168.1.165:8080", // 后端 API 地址
        // target: "http://192.168.1.165:10002", // 后端 API 地址
        target: "http://college.ithyxy.com:24713", // 后端 API 地址
        changeOrigin: true, // 修改请求头中的 Host 为目标地址
        ws: true,
        pathRewrite: {
          "^/tes": "/tes"
        }
      },
      "/ws": {
        //开发182.26.1.165:8080
        //部署192.168.1.165:8080
        // target: "ws://182.26.1.165:8080", // WebSocket 地址
        // target: "ws://192.168.1.165:10002", // WebSocket 地址
        target: "ws://college.ithyxy.com:24713", // WebSocket 地址
        changeOrigin: true,
        ws: true, // 必须设置为 true 以支持 WebSocket
        rewrite: (path) => path.replace(/^\/ws/, ""),
      },
      "/sse": {
        target: "http://182.26.1.165:8080", // SSE 地址
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/sse/, ""), // 去掉 /sse 前缀
      },
    },
  },
  configureServer(server) {
    server.middlewares.use((req, res, next) => {
      const url = req.url;
      if (!url.includes("/dev") && !url.includes(".")) {
        // 如果不是 API 请求且不包含文件扩展名
        req.url = "/";
      }
      next();
    });
  },
  build: {
    outDir: "dist",
    assetsDir: "static",
    rollupOptions: {
      output: {
        chunkFileNames: "static/js/[name]-[hash].js",
        entryFileNames: "static/js/[name]-[hash].js",
        assetFileNames: "static/[ext]/[name]-[hash].[ext]",
      },
    },
  },
});
